package com.ruoyi.ring.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

import java.util.Date;

/**
 * 健康计划对象 az_ring_health_plan
 * 
 * @author liuwp
 * @date 2025-09-01
 */
@Data
public class RingHealthPlan extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /**  */
    private Long id;

    /** 计划分类（自定义：1、AI报告生成：2、问卷生成：3） */
    @Excel(name = "计划分类", readConverterExp = "自=定义：1、AI报告生成：2、问卷生成：3")
    private String planAssort;

    /** 计划名称 */
    @Excel(name = "计划名称")
    private String planName;

    /** 计划周期（自定义） */
    @Excel(name = "计划周期", readConverterExp = "自=定义")
    private Integer planCycle;

    /** 计划进度（按周期来） */
    @Excel(name = "计划进度", readConverterExp = "按=周期来")
    private Integer planProgress;

    /** 计划积分（一天记一次） */
    @Excel(name = "计划积分", readConverterExp = "一=天记一次")
    private Integer planPoints;

    /** 是否默认（是：1、否：0） */
    @Excel(name = "是否默认", readConverterExp = "是=：1、否：0")
    private String idDefault;

    /** 计划状态（进行中：1、已生成：2、已完成：3） */
    @Excel(name = "计划状态", readConverterExp = "进=行中：1、已生成：2、已完成：3")
    private String planStatus;

    /** 步数（自定义） */
    @Excel(name = "步数", readConverterExp = "自=定义")
    private Integer stepCount;

    /** 睡眠质量（固定值） */
    @Excel(name = "睡眠质量", readConverterExp = "固=定值")
    private String sleepQuality;

    /** 静息心率（固定值） */
    @Excel(name = "静息心率", readConverterExp = "固=定值")
    private String restingHeartRate;

    /** 心率变异性（取上个月数据平均值） */
    @Excel(name = "心率变异性", readConverterExp = "取=上个月数据平均值")
    private String heartRateVariability;

    /** 血氧饱和度（固定值） */
    @Excel(name = "血氧饱和度", readConverterExp = "固=定值")
    private String bloodOxygenSaturation;

    /** 卡路里（自定义） */
    @Excel(name = "卡路里", readConverterExp = "自=定义")
    private String calorie;

    /** 打卡事件（自定义） */
    @Excel(name = "打卡事件", readConverterExp = "自=定义")
    private String checkInEvent;

    /** 情绪管理（固定值） */
    @Excel(name = "情绪管理", readConverterExp = "固=定值")
    private String emotionManagement;

    /** 设备sn */
    @Excel(name = "设备sn")
    private String deviceSn;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 是否领取（是：1、否：0） */
    @Excel(name = "是否领取", readConverterExp = "是=：1、否：0")
    private String isClaim;

    /** 开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 提前结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "提前结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date earlyEndDate;

    /** 运动时长 */
    @Excel(name = "运动时长")
    private Integer exerciseDuration;

    /** 运动卡路里 */
    @Excel(name = "运动卡路里")
    private Integer exerciseCalorie;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("planAssort", getPlanAssort())
                .append("planName", getPlanName())
                .append("planCycle", getPlanCycle())
                .append("planProgress", getPlanProgress())
                .append("planPoints", getPlanPoints())
                .append("idDefault", getIdDefault())
                .append("planStatus", getPlanStatus())
                .append("stepCount", getStepCount())
                .append("sleepQuality", getSleepQuality())
                .append("restingHeartRate", getRestingHeartRate())
                .append("heartRateVariability", getHeartRateVariability())
                .append("bloodOxygenSaturation", getBloodOxygenSaturation())
                .append("calorie", getCalorie())
                .append("checkInEvent", getCheckInEvent())
                .append("emotionManagement", getEmotionManagement())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("deviceSn", getDeviceSn())
                .append("userId", getUserId())
                .append("isClaim", getIsClaim())
                .append("startDate", getStartDate())
                .append("endDate", getEndDate())
                .append("earlyEndDate", getEarlyEndDate())
                .append("exerciseDuration", getExerciseDuration())
                .append("exerciseCalorie", getExerciseCalorie())
                .toString();
    }
}
